/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

/**
 *
 * @author CESAR VELASQUEZ
 */
import connection.Connection;
import dao.ArchivosJpaController;
import dao.CalificaJpaController;
import dao.EvaluadorJpaController;
import dao.FacultadJpaController;
import dao.ProfesorJpaController;
import dao.ProyectoJpaController;
import dao.UsuarioJpaController;
import dao.exceptions.IllegalOrphanException;
import dao.exceptions.NonexistentEntityException;
import dao.exceptions.PreexistingEntityException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManagerFactory;
import modelo.Archivos;
import modelo.ArchivosPK;
import modelo.Califica;
import modelo.CalificaPK;
import modelo.Evaluador;
import modelo.Facultad;
import modelo.Profesor;
import modelo.Proyecto;
import modelo.Usuario;

@ManagedBean(name = "ControladorCalifica")
@SessionScoped
public class ControladorCalifica {

    //  private List<Proyecto> listaProyecto;
    //  private List<Proyecto> listaProyectoFacultad;
    private EntityManagerFactory factory;
    private Proyecto proyecto;
    private Califica califica;
    private String IDProyecto;
    private int promedio;
    private String cedulaEvaluador;
    //OJO: Cambiar el tipo item# de dato por entero, aqui y en la tabla Califica, para hacer la validacion de la calificacion (0 - 10)
    private String item1;
    private String item2;
    private String item3;
    private String item4;
    private String item5;
    private String item6;
    private String item7;
    private String item8;
    private String item9;
    private String item10;
    private String descripcion; // AGREGAR ESTE CAMPO A LA TABLA Y HACER NUEVAMENTE LA PERSITENCIA
    private EvaluadorJpaController daoEvaluador;
    private ProyectoJpaController daoProyecto;
    private UsuarioJpaController daoUsuario;
    private CalificaJpaController daoCalifica;

    public ControladorCalifica() {
    }

    public void cargarCalificar() {

        factory = Connection.getEmf();
        daoEvaluador = new EvaluadorJpaController(factory);
        Controlador controla = (Controlador) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("Controlador");
        //setEvaluador(daoEvaluador.findEvaluador(controla.getLogin()));

    }

    public void asignarEvaluador() {
        factory = Connection.getEmf();
        daoProyecto = new ProyectoJpaController(factory);
         daoEvaluador = new EvaluadorJpaController(factory);
        ControladorProyecto controla = (ControladorProyecto) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("ControladorProyecto");
         daoCalifica = new CalificaJpaController(factory);
      CalificaPK pk= new CalificaPK();
      pk.setIdproyecto(controla.getProyecto().getIdproyecto());
       System.out.println(controla.getProyecto().getIdproyecto());
      pk.setCedulaevaluador(getCedulaEvaluador());
      System.out.println(getCedulaEvaluador());
       Califica calificar= new Califica();
       calificar.setCalificaPK(pk);
       calificar.setProyecto(controla.getProyecto());
       calificar.setEvaluador(daoEvaluador.findEvaluador(getCedulaEvaluador()));
       
       try {
            daoCalifica.create(califica);
        } catch (PreexistingEntityException ex) {
            Logger.getLogger(ControladorCalifica.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ControladorCalifica.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public void calificarProyecto() {

        factory = Connection.getEmf();
        daoEvaluador = new EvaluadorJpaController(factory);
        daoProyecto = new ProyectoJpaController(factory);
        daoUsuario = new UsuarioJpaController(factory);

        daoCalifica = new CalificaJpaController(factory);
        ControladorProyecto controla = (ControladorProyecto) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("ControladorProyecto");
        //  ControladorUsuarios controlaUsuario = (ControladorUsuarios) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("ControladorUsuarios");
        Controlador controla2 = (Controlador) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("Controlador");

        // factory = Connection.getEmf();
        // ArchivosJpaController daoArchivos = new ArchivosJpaController(factory);

        Proyecto p = controla.getProyecto();
        // Archivos a= new Archivos();
        CalificaPK pk = new CalificaPK();
        pk.setIdproyecto(controla.getIDProyecto());
        System.out.println(controla.getIDProyecto());
        //pk.setCedulaevaluador(controlaUsuario.getTxtLogin()); //???
        pk.setCedulaevaluador(controla2.getLogin());
        System.out.println(controla2.getLogin());
        Califica CalificacionEvaluador = daoCalifica.findCalifica(pk);

        //pk.setIdproyecto(p.getIdproyecto());
        //pk.setRutaarchivo(destination+Filename);
        //a.setNombrearchivo(Filename);
        //a.setProyecto(p);
        //a.setArchivosPK(pk);
        CalificacionEvaluador.setItem1(item1);
        CalificacionEvaluador.setItem2(item2);
        CalificacionEvaluador.setItem3(item3);
        CalificacionEvaluador.setItem4(item4);
        CalificacionEvaluador.setItem5(item5);
        CalificacionEvaluador.setItem6(item6);
        CalificacionEvaluador.setItem7(item7);
        CalificacionEvaluador.setItem8(item8);
        CalificacionEvaluador.setItem9(item9);
        CalificacionEvaluador.setItem10(item10);
        try {


            daoCalifica.edit(CalificacionEvaluador);
            System.out.println("entro a calificar");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorCalifica.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ControladorCalifica.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public Califica getCalifica() {
        return califica;
    }

    public void setCalifica(Califica califica) {
        this.califica = califica;
    }

    public String getIDProyecto() {
        return IDProyecto;
    }

    public void setIDProyecto(String IDProyecto) {
        this.IDProyecto = IDProyecto;
    }

    public int getPromedio() {
        return promedio;
    }

    public void setPromedio(int promedio) {
        this.promedio = promedio;
    }

    public String getCedulaEvaluador() {
        return cedulaEvaluador;
    }

    public void setCedulaEvaluador(String cedulaEvaluador) {
        this.cedulaEvaluador = cedulaEvaluador;
    }

    public String getItem1() {
        return item1;
    }

    public void setItem1(String item1) {
        this.item1 = item1;
    }

    public String getItem2() {
        return item2;
    }

    public void setItem2(String item2) {
        this.item1 = item2;
    }

    public String getItem3() {
        return item3;
    }

    public void setItem3(String item3) {
        this.item3 = item3;
    }

    public String getItem4() {
        return item4;
    }

    public void setItem4(String item4) {
        this.item4 = item4;
    }

    public String getItem5() {
        return item5;
    }

    public void setItem5(String item5) {
        this.item5 = item5;
    }

    public String getItem6() {
        return item6;
    }

    public void setItem6(String item6) {
        this.item6 = item6;
    }

    public String getItem7() {
        return item7;
    }

    public void setItem7(String item7) {
        this.item7 = item7;
    }

    public String getItem8() {
        return item8;
    }

    public void setItem8(String item8) {
        this.item8 = item8;
    }

    public String getItem9() {
        return item9;
    }

    public void setItem9(String item9) {
        this.item9 = item9;
    }

    public String getItem10() {
        return item10;
    }

    public void setItem10(String item10) {
        this.item10 = item10;
    }
}
